#ifndef UNIQUEFIFOQUEUE_H
#define UNIQUEFIFOQUEUE_H

#include <deque>
#include <unordered_set>
#include <string>
#include <mutex>
#include <stdexcept>


// 数据唯一性的队列 先进先出
// 主要用于识别串口以及连接串口
class MyQueue {
public:
    // 添加元素
    bool push(const std::string& value);

    // 移除并返回队首元素
    std::string pop();

    // 检查队列是否为空
    bool empty() const;

    // 获取队列大小
    size_t size() const;

private:
    std::deque<std::string> queue; // 用于实现 FIFO
    std::unordered_set<std::string> uniqueSet; // 用于确保唯一性
    mutable std::mutex mutex; // 用于线程安全
};

#endif // UNIQUEFIFOQUEUE_H